home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / PowerPlant / Gadgets / CTabbedPanel.cp < prev    next >
Encoding:
Text File  |  1998-10-11  |  8.5 KB  |  340 lines  |  [TEXT/CWIE]

  1. // CTabbedPanel.cp -- window methods
  2.  
  3. #include "CTabbedPanel.h"
  4.  
  5. #include <UEnvironment.h>
  6. #include <UReanimator.h>
  7. #include <URegistrar.h>
  8. #include <LStream.h>
  9. #include <LTabGroup.h>
  10. #include <UAttachments.h>
  11. #include <LView.h>
  12. #include <CTabPanelGroup.h>
  13. #include <LAMTabsControlImp.h>
  14. #include <LGATabsControlImp.h>
  15. #include <LScrollBar.h>
  16. #include <LAMTrackActionImp.h>
  17. #include <LStdScrollBarImp.h>
  18. #include <CustomControls.h>
  19. #include <LSlider.h>
  20. #include <LGASliderImp.h>
  21. #include <LLittleArrows.h>
  22. #include <LGALittleArrowsImp.h>
  23. #include <LProgressBar.h>
  24. #include <LGAProgressBarImp.h>
  25. #include <LChasingArrows.h>
  26. #include <LAMControlImp.h>
  27. #include <LGAChasingArrowsImp.h>
  28. #include <CTextUtils.h>
  29.  
  30. #include "DDocData.h"
  31. #include "GadgetsCmds.h"
  32.  
  33. const MessageT    msgBars    = 'Bars';
  34. const MessageT    msgStandard2    = 'Sta2';
  35. const MessageT    msgGraphic    = 'Grac';
  36. const MessageT    msgSlider    = 'Slir';
  37. const MessageT    msgTickMarks    = 'Tics';
  38. const MessageT    msgNonDirectional    = 'Nonl';
  39. const MessageT    msgLittleArrows    = 'Lits';
  40. const MessageT    msgSpinner    = 'Spir';
  41. const MessageT    msgVolumeControl    = 'Voll';
  42. const MessageT    msgJimSSlider    = 'Jimr';
  43.  
  44. #define PPob_TabbedPanelID    202
  45. #define RidL_TabbedPanelID    202
  46.  
  47. Boolean        CTabbedPanel::sIsRegistered = false;
  48.  
  49. //----------
  50. CTabbedPanel*        CTabbedPanel::CreateTabbedPanel (
  51.     LCommander*        inSuperCommander,
  52.     DDocData*        inData)
  53. {
  54.     if (!sIsRegistered) {
  55.         RegisterClass ();
  56.     }
  57.  
  58.     CTabbedPanel*        window;
  59.     window = (CTabbedPanel *)LWindow::CreateWindow(PPob_TabbedPanelID, inSuperCommander);
  60.     window->ConnectToData (inData);
  61.     return window;
  62. }
  63.  
  64. //----------
  65. #define    RegisterClasses(AbstractClass,AMImpClass,GAImpClass)    \
  66.     RegisterClass_(AbstractClass);    \
  67.     if (useAppearance) {    \
  68.         RegisterClassID_(AMImpClass, AbstractClass::imp_class_ID);    \
  69.     } else {    \
  70.         RegisterClassID_(GAImpClass, AbstractClass::imp_class_ID);    \
  71.     }
  72.  
  73. //----------
  74. void    CTabbedPanel::RegisterClass ()
  75. {
  76.     Boolean        useAppearance = UEnvironment::HasFeature (env_HasAppearance);
  77.  
  78.     RegisterClass_(CTabbedPanel);
  79.  
  80.     // register the pane classes we use
  81.     RegisterClass_(LView);
  82.     RegisterClasses (CTabPanelGroup, LAMTabsControlImp, LGATabsControlImp);
  83.     RegisterClasses (LScrollBar, LAMTrackActionImp, LStdScrollBarImp);
  84.     RegisterClasses (CScrollBar, CustomControlImp, CustomControlImp);
  85.     RegisterClasses (LSlider, LAMTrackActionImp, LGASliderImp);
  86.     RegisterClasses (LLittleArrows, LAMTrackActionImp, LGALittleArrowsImp);
  87.     RegisterClasses (LProgressBar, LAMTrackActionImp, LGAProgressBarImp);
  88.     RegisterClasses (LChasingArrows, LAMControlImp, LGAChasingArrowsImp);
  89.     RegisterClasses (CControlPane, CustomControlImp, CustomControlImp);
  90.  
  91.     sIsRegistered = true;
  92. }
  93.  
  94. //----------
  95. CTabbedPanel::CTabbedPanel (
  96.     LStream*    inStream)
  97.     : LWindow (inStream)
  98. {
  99. }
  100.  
  101. //----------
  102. CTabbedPanel::~CTabbedPanel ()
  103. {
  104. }
  105.  
  106. //----------
  107. //    This member function gets called once the containment hierarchy that contains
  108. //    this pane has been built. It gives us a chance to get data members for
  109. //    interesting subviews, and to do other operations now that our subviews exist.
  110. void    CTabbedPanel::FinishCreateSelf ()
  111. {
  112.     mBarsPanel = (CTabPanelGroup*) FindPaneByID ('Bars');
  113.  
  114.     mStandard2Scroll = (LScrollBar*) FindPaneByID ('Sta2');
  115.  
  116.     mGraphicScroll = (CScrollBar*) FindPaneByID ('Grac');
  117.  
  118.     mSliderScroll = (LSlider*) FindPaneByID ('Slir');
  119.  
  120.     mTickMarksScroll = (LSlider*) FindPaneByID ('Tics');
  121.  
  122.     mNonDirectionalScroll = (LSlider*) FindPaneByID ('Nonl');
  123.  
  124.     mLittleArrowsScroll = (LLittleArrows*) FindPaneByID ('Lits');
  125.  
  126.     mSpinnerScroll = (CScrollBar*) FindPaneByID ('Spir');
  127.  
  128.     mVolumeControlScroll = (CScrollBar*) FindPaneByID ('Voll');
  129.  
  130.     mJimSSliderScroll = (CScrollBar*) FindPaneByID ('Jimr');
  131.  
  132.     mStandard3Bar = (LProgressBar*) FindPaneByID ('Sta3');
  133.  
  134.     mIndeterminateBar = (LProgressBar*) FindPaneByID ('Inde');
  135.  
  136.     mChasingArrowsBar = (LChasingArrows*) FindPaneByID ('Chas');
  137.  
  138.     mRectangleBar = (CControlPane*) FindPaneByID ('Rece');
  139.  
  140.     mRoundRectBar = (CControlPane*) FindPaneByID ('Rout');
  141.  
  142.     mBarberPoleBar = (CControlPane*) FindPaneByID ('Bare');
  143.  
  144.     mRoundBarberBar = (CControlPane*) FindPaneByID ('Rour');
  145.  
  146.  
  147.     UReanimator::LinkListenerToControls(this, this, RidL_TabbedPanelID);
  148.         // "connect" self to our controls that we want to "listen" to
  149.  
  150.     // any additional initialization for your window:
  151. }
  152.  
  153. //----------
  154. void    CTabbedPanel::ConnectToData (
  155.     DDocData*        inData)
  156. {
  157.     mData = inData;
  158.     mData->AddListener (this);
  159.  
  160.     mBarsPanel->SetValue (mData->GetBars ());
  161.     mStandard2Scroll->SetValue (mData->GetStandard2 ());
  162.     mGraphicScroll->SetValue (mData->GetGraphic ());
  163.     mSliderScroll->SetValue (mData->GetSlider ());
  164.     mTickMarksScroll->SetValue (mData->GetTickMarks ());
  165.     mNonDirectionalScroll->SetValue (mData->GetNonDirectional ());
  166.     mLittleArrowsScroll->SetValue (mData->GetLittleArrows ());
  167.     mSpinnerScroll->SetValue (mData->GetSpinner ());
  168.     mVolumeControlScroll->SetValue (mData->GetVolumeControl ());
  169.     mJimSSliderScroll->SetValue (mData->GetJimSSlider ());
  170.     mStandard3Bar->SetValue (mData->GetStandard3 ());
  171.     mIndeterminateBar->SetValue (mData->GetIndeterminate ());
  172.     mChasingArrowsBar->SetValue (mData->GetChasingArrows ());
  173.     mRectangleBar->SetValue (mData->GetRectangle ());
  174.     mRoundRectBar->SetValue (mData->GetRoundRect ());
  175.     mBarberPoleBar->SetValue (mData->GetBarberPole ());
  176.     mRoundBarberBar->SetValue (mData->GetRoundBarber ());
  177. }
  178.  
  179. //----------
  180. void    CTabbedPanel::DataChanged (
  181.     long        inDataID)
  182. {
  183.     StopListening ();
  184.  
  185.     if (inDataID == idBars) {
  186.         mBarsPanel->SetValue (mData->GetBars ());
  187.     }
  188.     if (inDataID == idStandard2) {
  189.         mStandard2Scroll->SetValue (mData->GetStandard2 ());
  190.     }
  191.     if (inDataID == idGraphic) {
  192.         mGraphicScroll->SetValue (mData->GetGraphic ());
  193.     }
  194.     if (inDataID == idSlider) {
  195.         mSliderScroll->SetValue (mData->GetSlider ());
  196.     }
  197.     if (inDataID == idTickMarks) {
  198.         mTickMarksScroll->SetValue (mData->GetTickMarks ());
  199.     }
  200.     if (inDataID == idNonDirectional) {
  201.         mNonDirectionalScroll->SetValue (mData->GetNonDirectional ());
  202.     }
  203.     if (inDataID == idLittleArrows) {
  204.         mLittleArrowsScroll->SetValue (mData->GetLittleArrows ());
  205.     }
  206.     if (inDataID == idSpinner) {
  207.         mSpinnerScroll->SetValue (mData->GetSpinner ());
  208.     }
  209.     if (inDataID == idVolumeControl) {
  210.         mVolumeControlScroll->SetValue (mData->GetVolumeControl ());
  211.     }
  212.     if (inDataID == idJimSSlider) {
  213.         mJimSSliderScroll->SetValue (mData->GetJimSSlider ());
  214.     }
  215.     if (inDataID == idStandard3) {
  216.         mStandard3Bar->SetValue (mData->GetStandard3 ());
  217.     }
  218.     if (inDataID == idIndeterminate) {
  219.         mIndeterminateBar->SetValue (mData->GetIndeterminate ());
  220.     }
  221.     if (inDataID == idChasingArrows) {
  222.         mChasingArrowsBar->SetValue (mData->GetChasingArrows ());
  223.     }
  224.     if (inDataID == idRectangle) {
  225.         mRectangleBar->SetValue (mData->GetRectangle ());
  226.     }
  227.     if (inDataID == idRoundRect) {
  228.         mRoundRectBar->SetValue (mData->GetRoundRect ());
  229.     }
  230.     if (inDataID == idBarberPole) {
  231.         mBarberPoleBar->SetValue (mData->GetBarberPole ());
  232.     }
  233.     if (inDataID == idRoundBarber) {
  234.         mRoundBarberBar->SetValue (mData->GetRoundBarber ());
  235.     }
  236.  
  237.     StartListening ();
  238. }
  239.  
  240. //----------
  241. void    CTabbedPanel::ListenToMessage (
  242.     MessageT    inMessage,
  243.     void*        ioParam)
  244. {
  245.     switch (inMessage) {
  246.     case msgDataChanged:
  247.             DataChanged ((long)ioParam);
  248.         break;
  249.  
  250.     case msgBars:
  251.             mData->SetBars (mBarsPanel->GetValue ());
  252.         break;
  253.  
  254.     case msgStandard2:
  255.             mData->SetStandard2 (mStandard2Scroll->GetValue ());
  256.         break;
  257.  
  258.     case msgGraphic:
  259.             mData->SetGraphic (mGraphicScroll->GetValue ());
  260.         break;
  261.  
  262.     case msgSlider:
  263.             mData->SetSlider (mSliderScroll->GetValue ());
  264.         break;
  265.  
  266.     case msgTickMarks:
  267.             mData->SetTickMarks (mTickMarksScroll->GetValue ());
  268.         break;
  269.  
  270.     case msgNonDirectional:
  271.             mData->SetNonDirectional (mNonDirectionalScroll->GetValue ());
  272.         break;
  273.  
  274.     case msgLittleArrows:
  275.             mData->SetLittleArrows (mLittleArrowsScroll->GetValue ());
  276.         break;
  277.  
  278.     case msgSpinner:
  279.             mData->SetSpinner (mSpinnerScroll->GetValue ());
  280.         break;
  281.  
  282.     case msgVolumeControl:
  283.             mData->SetVolumeControl (mVolumeControlScroll->GetValue ());
  284.         break;
  285.  
  286.     case msgJimSSlider:
  287.             mData->SetJimSSlider (mJimSSliderScroll->GetValue ());
  288.         break;
  289.  
  290.     default:
  291.           ; // do something
  292.         break;
  293.     }
  294. }
  295.  
  296. //----------
  297. Boolean        CTabbedPanel::ObeyCommand (
  298.     CommandT    inCommand,
  299.     void*        ioParam)
  300. {
  301.     Boolean        cmdHandled = true;
  302.  
  303.     if (inCommand < 0) {
  304.         // modal dialog has finished
  305.  
  306.         switch (-inCommand) {
  307.         }
  308.  
  309.     } else {
  310.         switch (inCommand) {
  311.  
  312.         default:
  313.                 cmdHandled = LWindow::ObeyCommand(inCommand, ioParam);
  314.             break;
  315.         }
  316.     }
  317.  
  318.     return cmdHandled;
  319. }
  320.  
  321. //----------
  322. void    CTabbedPanel::FindCommandStatus (
  323.     CommandT    inCommand,
  324.     Boolean        &outEnabled,
  325.     Boolean        &outUsesMark,
  326.     Char16        &outMark,
  327.     Str255        outName)
  328. {
  329.     outUsesMark = false;
  330.  
  331.     switch (inCommand) {
  332.  
  333.  
  334.     default:
  335.             LWindow::FindCommandStatus(inCommand, outEnabled,
  336.                                         outUsesMark, outMark, outName);
  337.         break;
  338.     }
  339. }
  340.